package com.fjzcit.mysqltuning.service;

/**
 * @Author Atu
 * @Date 2025/01/XX
 * @Version 1.0
 * @Description ChaosBlade 故障注入服务接口
 */
public interface ChaosBladeService {
    
    /**
     * 注入 DRUID 连接池满故障
     * @param duration 故障持续时间（秒）
     * @param probability 故障概率（0-1）
     * @return 故障注入结果
     */
    String injectDruidConnectionPoolFull(int duration, double probability);
    
    /**
     * 注入 DRUID 连接延迟故障
     * @param delay 延迟时间（毫秒）
     * @param duration 故障持续时间（秒）
     * @param probability 故障概率（0-1）
     * @return 故障注入结果
     */
    String injectDruidConnectionDelay(int delay, int duration, double probability);
    
    /**
     * 注入 DRUID 连接超时故障
     * @param timeout 超时时间（毫秒）
     * @param duration 故障持续时间（秒）
     * @param probability 故障概率（0-1）
     * @return 故障注入结果
     */
    String injectDruidConnectionTimeout(int timeout, int duration, double probability);
    
    /**
     * 恢复所有故障注入
     * @return 恢复结果
     */
    String recoverAllFaults();
    
    /**
     * 获取当前故障注入状态
     * @return 故障注入状态
     */
    String getFaultStatus();
} 